using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using EYDIngenieria.ERP.Aplicacion.Gestion;
using EYDIngenieria.ERP.Aplicacion.Mantenedores;
using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;

public partial class Gestion_Default : System.Web.UI.Page
{

    private MantenedorMedioDePago mantenedorMedioDePago = new MantenedorMedioDePago();
    private MantenedorFamiliaProducto mantenedorFamiliasDeProductos = new MantenedorFamiliaProducto();
    private MantenedorProducto mantenedorProducto = new MantenedorProducto();
    private GestionOrdenDeTrabajo gestionOrdenDeTrabajo = new GestionOrdenDeTrabajo();
    private GestionDetalleOrdenDeTrabajo gestionDetalleOrdenDeTrabajo = new GestionDetalleOrdenDeTrabajo();
    private MantenedorEstadoOrdenDeTrabajo mantenedorEstadoOrdenesDeTrabajo = new MantenedorEstadoOrdenDeTrabajo();
    private EstadoOrdenDeTrabajo ingresado;
    private OrdenDeTrabajo ot = new OrdenDeTrabajo();
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session.Keys.Count == 0)
            Response.Redirect("../Default.aspx");
       
        if (!IsPostBack)
        {
            ingresado = mantenedorEstadoOrdenesDeTrabajo.Buscar("A")[0];
            gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(ingresado);
            gdvOrdenesDeTrabajo.DataBind();
        
            gdvDetalle.DataSource = ot.Detalle;
            gdvDetalle.DataBind();
          
           
        }

        
    }

  
   
    protected void gdvOrdenesDeTrabajo_SelectedIndexChanged(object sender, EventArgs e)
    {
       CargaDetalle();
    }
    protected void btnAprobar_Click(object sender, EventArgs e)
    {
       
        int id = int.Parse(gdvOrdenesDeTrabajo.SelectedDataKey.Value.ToString());
        OrdenDeTrabajo ot = gestionOrdenDeTrabajo.Obtener(id);
        ot.Estado = mantenedorEstadoOrdenesDeTrabajo.Buscar("A")[0];
        gestionOrdenDeTrabajo.Modificar(ot);

        ingresado = mantenedorEstadoOrdenesDeTrabajo.Buscar("I")[0];
        gdvOrdenesDeTrabajo.DataSource = gestionOrdenDeTrabajo.Listar(ingresado);
        gdvOrdenesDeTrabajo.DataBind();

        lblCliente.Text = string.Empty;
        lblNumero.Text = string.Empty;
        lblDescripcion.Text = string.Empty;

    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox txbCantidad = ((TextBox) gdvDetalle.FooterRow.FindControl("txbCantidad"));
        CustomValidator cvlCantidad = ((CustomValidator) gdvDetalle.FooterRow.FindControl("cvlCantidad"));
        Label lblProducto = ((Label) gdvDetalle.FooterRow.FindControl("lblProducto"));
        
        if (gdvDetalle.SelectedIndex < 0 || txbCantidad.Text.ToString().Equals(string.Empty))
            return;
        
        int id = int.Parse(gdvDetalle.SelectedDataKey.Value.ToString());
        DetalleOrdenDeTrabajo dot = gestionDetalleOrdenDeTrabajo.Obtener(id);
        double cantidad = double.Parse(txbCantidad.Text);
        if (cantidad > dot.Despachado)
        {
            cvlCantidad.ErrorMessage = "La cantidad debe ser menor a " + dot.Despachado.ToString();
            cvlCantidad.IsValid = false;
            return;
        }
        else
            cvlCantidad.IsValid = true;
       
       
        gestionDetalleOrdenDeTrabajo.Devolver(dot,cantidad);

        id = int.Parse(gdvOrdenesDeTrabajo.SelectedDataKey.Value.ToString());
        OrdenDeTrabajo ot = gestionOrdenDeTrabajo.Obtener(id);
        gdvDetalle.DataSource = ot.Detalle;
        gdvDetalle.DataBind();
        gdvDetalle.SelectedIndex = -1;
        txbCantidad.Text = string.Empty;
        lblProducto.Text = string.Empty;

        foreach (GridViewRow r in gdvDetalle.Rows)
        {
            ((LinkButton)r.FindControl("lbtSeleccionar")).Enabled = int.Parse(((Label)r.FindControl("lblDespachado")).Text) > 0;
        }
        
    }
    protected void gdvDetalle_SelectedIndexChanged(object sender, EventArgs e)
    {
      /// CargaDetalle();
        TextBox txbCantidad = ((TextBox) gdvDetalle.FooterRow.FindControl("txbCantidad"));
        CustomValidator cvlCantidad = ((CustomValidator)gdvDetalle.FooterRow.FindControl("cvlCantidad"));
        Label lblProducto = ((Label)gdvDetalle.FooterRow.FindControl("lblProducto"));
        
        int id = int.Parse(gdvDetalle.SelectedValue.ToString());
        DetalleOrdenDeTrabajo dot = gestionDetalleOrdenDeTrabajo.Obtener(id);
        lblProducto.Text = dot.Producto.Descripcion;
        txbCantidad.Text = dot.Despachado.ToString();
       ((Button)gdvDetalle.FooterRow.FindControl("btnDespachar")).Enabled = txbCantidad.Enabled = false;
        if (dot.Despachado>0)
            ((Button)gdvDetalle.FooterRow.FindControl("btnDespachar")).Enabled = txbCantidad.Enabled = true;
        
        

    }

    private void CargaDetalle()
    {
        GridView grilla = gdvOrdenesDeTrabajo;
        int id = int.Parse(grilla.SelectedDataKey.Value.ToString());
        OrdenDeTrabajo ot = gestionOrdenDeTrabajo.Obtener(id);
        gdvDetalle.DataSource = ot.Detalle;
        gdvDetalle.DataBind();
        lblCliente.Text = ot.Cliente.RazonSocial;
        lblNumero.Text = ot.NumeroOrdenDeTrabajo.ToString();
        lblDescripcion.Text = ot.Descripcion;

        foreach (GridViewRow r in gdvDetalle.Rows)
        {
            ((LinkButton)r.FindControl("lbtSeleccionar")).Enabled = int.Parse(((Label)r.FindControl("lblDespachado")).Text) > 0;
        }
       
    }

    
}
